Throughput of a download session over a TCP/IP connection is proportional to the size of the congestion window, as long as the congestion window isn't larger than the bandwidth delay product. Wherein the congestion window is the one that is used in that session. TCP stand for Transmission-Control Protocol. IP stand for Internet-Protocol. TCP connection is a reliable connection, which means that a sender of data over a TCP connection may send a group of one or more packets and then waits to get an acknowledgement, from the receiver, indicating that the one or more packets were obtained. When the sender does not received the acknowledgement, for the one or more packets it sent, it will stop and wait. If this wait exceeds a certain time limit, the sender may retransmit those packets. The amount of bytes in that group of packets is referred as the congestion window (CWND).
The transmission rate of a common download session can have a pattern with two phases. The first phase is called a slow-start (SS) phase. The SS phase starts upon initiating the connection. The slow-start algorithm can be used in order to control the transmission rate in an exponential growth. The second phase can be referred as congestion avoidance (CA) phase. In CA phase a linear growth algorithm can be used.
In a common SS, the CWND is set to a small number of bytes. The value of the CWND will be increased by one maximum segment size (MSS) with each received acknowledgement (ACK). Thus, after receiving the ACK for the last packet in a CWND, the value of the CWND is effectively doubled, reflecting an exponential growth. The SS phase continues until a slow-start threshold (SST) is reached or a loss is detected. Then, the transmission rate is changed to linear-growth algorithm, which can be referred as CA algorithm. An example of linear-growth algorithm may add a fixed number of bytes per each round-trip time (RTT). An example of such an amount can be the number of bytes that is defined by the MSS. In the present disclosure the terms packet and segment can be used interchangeably. In some cases, during the life time of the connection, when the value of the CWND decreases below the SST, then the SS phase algorithm can be used again.
The throughput (TP) over a certain connection is mostly proportional to the size of the CWND and is mostly inverse proportional to the smooth-round-trip time (SRTT) over that connection. The SRTT is an average value based on two or more measured RTTs. Thus, the TP can be estimated by dividing the value of the CWND by the value of the SRTT. In order to increase the TP a sender needs to increase the CWND, however increasing the CWND will produce a larger SRTT. In addition, too high CWND or too high SRTT may lead to packet loss.
Indication on packet loss may reach the sender after a delay which may postpone the reaction of the sender and may increase the amount of packet loss. Increasing the amount of packet loss may reduce the TP over the connection. Thus, the TP over a connection depends on two conflicting factors, which require a method for defining optimal values for those conflicting factors. In the following description and the claims, the term “RTT” and “SRTT” may be used interchangeably.